OpenStack Keystone基础。
Keystone概论
Keystone主要工作为:
- 管理用户及其权限
- 维护OpenStack Services的Endpoint
- 认证和鉴权
Keystone主要有以下几个概念:
User、Credentials、Authentication、Token、Project、Service、Endpoint、Role
##User
任何使用OpenStack的实体。(可以是真正的用户,或者是其他系统或服务)
当User请求访问OpenStack时,Keystone会对其进行验证。
Horizon在Identity->Users管理User(缺图)
默认用户除了admin和demo,OpenStack也为nova、cinder、glance、neutron服务创建了响应的User,使得admin可以管理这些User。
Credentials
User用来证明自己身份的信息。(1. 用户名\密码 2.Token 3.API Key 4.其他高级方式)
Authentication
Keystone验证User身份的过程。
User访问OpenStack时向Keystone提交用户名和密码形式的Credentials,Keystone验证通过后会给User签发一个Token作为后续访问的Credential。
Token
Token是由数字和字母组成的字符串,User成功Authentication后Keystion生成Token并分配给User。
Token的几点特性
- Token用作访问Service的Credential
- Service会通过Keystone验证Token的有效性
- Token的有效期为24小时
Project
Project用于将OpenStack的资源进行分组和隔离。
Project可以是一个客户(公有云),也可以是项目组(私有云)。
资源的所有权属于Project,而不是user。
每个user必须挂在Project才能访问该Project的资源。
一个User可以属于多个Project。
Horizon在Identity->Projects管理Project(缺图)
通过Manage Member将User添加到Project(缺图)
Service
Service包括计算nova、存储cinder、对象存储swift、磁盘服务glance、网络服务neutron等。
每个Service都会提供若干个Endpoint,User通过Endpoint访问资源和执行操作。
Endpoint
Endpoint是一个网络上可访问的地址url。
Service通过endpoint暴露自己的API。
Keystone负责管理和维护每个Service的Endpoint。
1 | # 查看Endpoint命令 |
Role
安全包括两个部分:认证Authentication和鉴权Authorization
Authentication:认证身份
Authorization:权限管理
Keystone通过role实现鉴权Authorization
- KeyStone定义role
openstack role list
- 为User分配一个或者多个 Role。(在Horizon->Identity->Project->Manage Members修改)
- Service决定每个Role的权限。(通过各自的policy.json进行修改)